home *** CD-ROM | disk | FTP | other *** search
- #include <stdlib.h>
- #include <string.h>
- #include <stdio.h>
- #include "kernel.h"
- #include "swis.h"
- #include "parallax.h"
-
- static int f[33];
- static void *pic[4] =
- {
- picture0,
- picture1,
- picture2,
- picture3
- };
- /*==================================================================*/
- static void paint_background(void)
- {
- static int h[14]={-68,40, -4,19, -4,9, -3,6, 73, 2,3,5 ,10,10, };
- static int s[14]={ 0 , 6, 0, 4, 0,3, 0,2, 4, 5,8,16,24,32, };
- int i, y=0;
- for (i=0; i<14; i++)
- {
- if (h[i]>0)
- {
- int f2,wh,wid;
- f2=f[s[i]]>>5;
- wh=(f[s[i]]>>3) &3;
- wid=80-f2;
- blitstripe(0, f2, wid, y, h[i], pic[wh] );
- if (wid<80) blitstripe(wid+0, 0, 80-wid,y, h[i], pic[wh] );
-
- y +=h[i];
- } else
- y -=h[i];
- }
- for (i=1;i<33;i++)
- {
- f[i] +=i;
- if (f[i]>=2560) f[i] -=2560;
- }
- }
- /*==================================================================*/
- static void initialise(void)
- {
- _kernel_swi_regs arm;
- int block[]={ 148, 150, -1};
- _kernel_swi(OS_WriteI + 22, &arm, &arm);
- _kernel_swi(OS_WriteI + 13, &arm, &arm);
- _kernel_swi(OS_RemoveCursors, &arm, &arm);
- arm.r[0] = (int)block;
- arm.r[1] = (int)block;
- _kernel_swi(OS_ReadVduVariables, &arm, &arm);
- screenbase = block[0];
- if (block[1] < 80*1024)
- {
- fprintf(stderr, "At least 80k screen memory needed\n");
- exit(1);
- }
- }
- /*==================================================================*/
- int main(void)
- {
- initialise();
- blitstripe(0, 0, 80, 0, 256, pic[0] );
- while (!_kernel_escape_seen())
- {
- paint_background();
- _kernel_osbyte(19,0,0);
- }
- }
- /*==================================================================*/
-